package com.bt.lms.service;

import com.bt.lms.entity.page.Page;
import com.bt.lms.entity.Role;
import java.util.List;

/**
 * 角色权限服务
 *
 * @author 徐大永
 */
public interface RoleService {

    /**
     * 分页查询角色权限功能
     *
     * @param page 分页条件模型
     *                  要展示的数据（角色）
     *                  每一页条数：
     *                  页码：
     * @return 分页模型
     * 总条数
     * 当前页
     * 每页展示条数
     * 展示的数据（角色）
     */
    Page<Role> pagingQuery(Page<Role> page);

    /**
     * 分页查询角色（关联角色用）
     * @param page 分页模型
     *                  角色：
     *                  条数
     *                  页码
     * @return 分页模型
     *          角色：id
     *          编号
     *          名称
     *          说明
     */
    Page<Role> corRoleQuery(Page<Role> page);

    /**
     * 新增角色功能
     *
     * @param role 要新增的角色信息
     * @return 是否成功
     */
    boolean add(Role role);

    /**
     * 编辑角色功能
     *
     * @param role 编辑后的角色信息
     * @return 是否成功
     */
    boolean edit(Role role);

    /**
     * 删除角色功能
     *
     * @param id 要删除的角色id
     * @return 是否成功
     */
    boolean del(Long id);

    /**
     * 关联角色功能
     * @param userId 用户id
     * @param roleIds 要关联的角色*
     * @return 是否成功
     */
    boolean corRole(Long userId,List<Long> roleIds);

    /**
     * 取消用户与角色关联功能
     *
     * @param userId 要取消关联的用户id
     * @param roleId 要取消关联的角色id
     * @return 是否成功
     */
    boolean callOffCor(Long userId, Long roleId);

    /**
     * 查询用户角色
     * @param userId 用户id
     * @return 角色id集
     */
    List<Long> queryRoleFromUser(Long userId);
}
